printer 2.2.1
Loading...
Searching...
No Matches
printer.h
Go to the documentation of this file.
1/****************************************************************************
2** Copyright (C) 2026 MikroElektronika d.o.o.
3** Contact: https://www.mikroe.com/contact
4**
5** Permission is hereby granted, free of charge, to any person obtaining a copy
6** of this software and associated documentation files (the "Software"), to deal
7** in the Software without restriction, including without limitation the rights
8** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9** copies of the Software, and to permit persons to whom the Software is
10** furnished to do so, subject to the following conditions:
11** The above copyright notice and this permission notice shall be
12** included in all copies or substantial portions of the Software.
13**
14** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20** USE OR OTHER DEALINGS IN THE SOFTWARE.
21****************************************************************************/
22
27
28#ifndef PRINTER_H
29#define PRINTER_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
39#ifdef PREINIT_SUPPORTED
40#include "preinit.h"
41#endif
42
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
45 #include "delays.h"
46 #endif
47#endif
48
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_uart.h"
52
58
63
68
73#define PRINTER_CMD_EOT 0x04
74#define PRINTER_CMD_ENQ 0x05
75#define PRINTER_CMD_HT 0x09
76#define PRINTER_CMD_LF 0x0A
77#define PRINTER_CMD_CR 0x0D
78#define PRINTER_CMD_DLE 0x10
79#define PRINTER_CMD_DC4 0x14
80#define PRINTER_CMD_ESC 0x1B
81#define PRINTER_CMD_FS 0x1C
82#define PRINTER_CMD_GS 0x1D
83
88#define PRINTER_COM_BAUD_RATE_9600 0x00
89#define PRINTER_COM_BAUD_RATE_19200 0x01
90#define PRINTER_COM_BAUD_RATE_38400 0x02
91#define PRINTER_COM_BAUD_RATE_57600 0x03
92#define PRINTER_COM_BAUD_RATE_115200 0x04
93#define PRINTER_COM_FLOW_CTRL_OFF 0x00
94#define PRINTER_COM_FLOW_CTRL_SW 0x01
95#define PRINTER_COM_FLOW_CTRL_HW 0x02
96
101#define PRINTER_HEAD_MM58_FTP628MCL101 0x00
102#define PRINTER_HEAD_MM80_FTP638MCL101 0x01
103#define PRINTER_HEAD_MM58_LTP02_245_13 0x02
104#define PRINTER_HEAD_MM58_LTP02_245_C1 0x03
105
110#define PRINTER_FONT_TYPE_NORMAL 0x00
111#define PRINTER_FONT_TYPE_ITALIC 0x02
112#define PRINTER_FONT_TYPE_BOLD 0x08
113#define PRINTER_FONT_TYPE_DOUBLE_HEIGHT 0x10
114#define PRINTER_FONT_TYPE_DOUBLE_WIDTH 0x20
115#define PRINTER_FONT_TYPE_REVERSE 0x40
116#define PRINTER_FONT_TYPE_UNDERLINE 0x80
117
122#define PRINTER_FONT_SIZE_SMALL 0x01
123#define PRINTER_FONT_SIZE_LARGE 0x02
124
129#define PRINTER_ALIGN_LEFT 0x00
130#define PRINTER_ALIGN_CENTER 0x01
131#define PRINTER_ALIGN_RIGHT 0x02
132
137#define PRINTER_GRAYSCALE_0 0x00
138#define PRINTER_GRAYSCALE_1 0x01
139#define PRINTER_GRAYSCALE_2 0x02
140#define PRINTER_GRAYSCALE_3 0x03
141#define PRINTER_GRAYSCALE_4 0x04
142#define PRINTER_GRAYSCALE_5 0x05
143#define PRINTER_GRAYSCALE_6 0x06
144#define PRINTER_GRAYSCALE_7 0x07
145#define PRINTER_GRAYSCALE_8 0x08
146
151#define PRINTER_PICTURE_TYPE_NORMAL 0x00
152
157#define PRINTER_BARCODE_SYS_UPCA 0x00
158#define PRINTER_BARCODE_SYS_UPCE 0x01
159#define PRINTER_BARCODE_SYS_EAN13 0x02
160#define PRINTER_BARCODE_SYS_EAN8 0x03
161#define PRINTER_BARCODE_SYS_CODE39 0x04
162#define PRINTER_BARCODE_SYS_ITF25 0x05
163#define PRINTER_BARCODE_SYS_CODABAR 0x06
164#define PRINTER_BARCODE_SYS_CODE93 0x07
165#define PRINTER_BARCODE_SYS_CODE128 0x08
166
171#define PRINTER_CB_STATE_DEFAULT 0x00
172#define PRINTER_CB_STATE_PAPEROUT 0x04
173#define PRINTER_CB_STATE_OVERHEAT 0x08
174
179#define PRINTER_BITMAP_LOCATION_1 0x01
180#define PRINTER_BITMAP_LOCATION_2 0x02
181#define PRINTER_BITMAP_LOCATION_3 0x03
182#define PRINTER_BITMAP_LOCATION_4 0x04
183#define PRINTER_BITMAP_ALIGN 0x00
184#define PRINTER_BITMAP_MODE_NORMAL 0x00
185
190#define PRINTER_QR_SIZE_21_53 0x00
191#define PRINTER_QR_SIZE_57_121 0x01
192#define PRINTER_QR_SIZE_125_177 0x02
193#define PRINTER_QR_ERROR_7_PCT 0x00
194#define PRINTER_QR_ERROR_15_PCT 0x01
195#define PRINTER_QR_ERROR_25_PCT 0x02
196#define PRINTER_QR_ERROR_30_PCT 0x03
197
202#define PRINTER_READY_TIMEOUT 5000
203
209#define PRINTER_TX_DRV_BUFFER_SIZE 500
210#define PRINTER_RX_DRV_BUFFER_SIZE 100
211 // printer_cmd
213
218
223
228#define PRINTER_MAP_MIKROBUS( cfg, mikrobus ) \
229 cfg.tx_pin = MIKROBUS( mikrobus, MIKROBUS_TX ); \
230 cfg.rx_pin = MIKROBUS( mikrobus, MIKROBUS_RX ); \
231 cfg.rts = MIKROBUS( mikrobus, MIKROBUS_INT );
232 // printer_map // printer
235
240typedef struct
241{
242 // Input pins
243 digital_in_t rts;
244
245 // Modules
246 uart_t uart;
247
248 // Buffers
251
252 uint8_t status[ 16 ];
253 uint8_t fw_info[ 64 ];
254
255} printer_t;
256
261typedef struct
262{
263 // Communication gpio pins
264 pin_name_t rx_pin;
265 pin_name_t tx_pin;
266
267 // Additional gpio pins
268 pin_name_t rts;
269
270 // Static variable
271 uint32_t baud_rate;
273 uart_data_bits_t data_bit;
274 uart_parity_t parity_bit;
275 uart_stop_bits_t stop_bit;
276
278
283typedef enum
284{
287
289
295
306
321
335
349err_t printer_generic_write ( printer_t *ctx, uint8_t *data_in, uint32_t len );
350
363err_t printer_generic_read ( printer_t *ctx, uint8_t *data_out, uint8_t len );
364
374
388
404
423err_t printer_set_com_mode ( printer_t *ctx, uint8_t baud_rate, uint8_t flow_control );
424
439err_t printer_set_printer_head ( printer_t *ctx, uint8_t head_index );
440
452
464
476
488err_t printer_print_string ( printer_t *ctx, char *data_in );
489
501err_t printer_print_string_lf ( printer_t *ctx, char *data_in );
502
514err_t printer_print_dots ( printer_t *ctx, uint8_t num_dots );
515
527err_t printer_print_lines ( printer_t *ctx, uint8_t num_lines );
528
540err_t printer_set_font_type ( printer_t *ctx, uint8_t font_type );
541
555err_t printer_set_alignment ( printer_t *ctx, uint8_t align );
556
568err_t printer_set_line_spacing ( printer_t *ctx, uint8_t num_dots );
569
581
594err_t printer_set_horizontal_tab ( printer_t *ctx, uint8_t *col_pos, uint8_t num_tabs );
595
607
621err_t printer_print_picture ( printer_t *ctx, uint8_t *pic_buf, uint16_t h_size, uint16_t v_size );
622
634err_t printer_set_left_margin ( printer_t *ctx, uint8_t num_dots );
635
647err_t printer_set_right_margin ( printer_t *ctx, uint8_t num_dots );
648
660err_t printer_set_abs_print_pos ( printer_t *ctx, uint16_t num_dots );
661
673err_t printer_set_font_grayscale ( printer_t *ctx, uint8_t grayscale );
674
686
698
710err_t printer_set_font_size ( printer_t *ctx, uint8_t size );
711
723
735
747err_t printer_set_barcode_height ( printer_t *ctx, uint8_t height );
748
760err_t printer_set_barcode_width ( printer_t *ctx, uint8_t width );
761
775err_t printer_print_barcode ( printer_t *ctx, uint8_t barcode_sys, uint8_t *barcode, uint8_t barcode_len );
776
788
800err_t printer_set_printer_cb ( printer_t *ctx, uint8_t callback );
801
816err_t printer_download_nv_bitmap ( printer_t *ctx, uint8_t location, uint8_t h_size, uint8_t v_size, uint8_t *bitmap );
817
829err_t printer_print_nv_bitmap ( printer_t *ctx, uint8_t location );
830
844err_t printer_set_qr_size ( printer_t *ctx, uint8_t size );
845
860err_t printer_set_qr_error_corr ( printer_t *ctx, uint8_t corr_level );
861
874err_t printer_transfer_qr_code ( printer_t *ctx, uint8_t *qr_code, uint16_t code_len );
875
887
888#ifdef __cplusplus
889}
890#endif
891#endif // PRINTER_H
892 // printer
894
895// ------------------------------------------------------------------------ END
#define PRINTER_RX_DRV_BUFFER_SIZE
Definition printer.h:210
#define PRINTER_TX_DRV_BUFFER_SIZE
Printer driver buffer size.
Definition printer.h:209
err_t printer_set_qr_size(printer_t *ctx, uint8_t size)
Printer set QR size function.
err_t printer_print_picture(printer_t *ctx, uint8_t *pic_buf, uint16_t h_size, uint16_t v_size)
Printer print picture function.
err_t printer_print_cr(printer_t *ctx)
Printer print CR function.
err_t printer_set_font_grayscale(printer_t *ctx, uint8_t grayscale)
Printer set font grayscale function.
err_t printer_default_line_spacing(printer_t *ctx)
Printer default line spacing function.
err_t printer_generic_write(printer_t *ctx, uint8_t *data_in, uint32_t len)
Printer data writing function.
err_t printer_init(printer_t *ctx, printer_cfg_t *cfg)
Printer initialization function.
err_t printer_soft_init(printer_t *ctx)
Printer soft init function.
err_t printer_set_printer_head(printer_t *ctx, uint8_t head_index)
Printer set printer head function.
err_t printer_print_string(printer_t *ctx, char *data_in)
Printer print string function.
err_t printer_hide_barcode_text(printer_t *ctx)
Printer hide barcode text function.
err_t printer_print_dots(printer_t *ctx, uint8_t num_dots)
Printer print dots function.
err_t printer_clear_print_buffer(printer_t *ctx)
Printer clear print buffer function.
err_t printer_print_string_lf(printer_t *ctx, char *data_in)
Printer print string function.
err_t printer_print_qr_code(printer_t *ctx)
Printer print QR code function.
err_t printer_print_nv_bitmap(printer_t *ctx, uint8_t location)
Printer print NV Bitmap function.
err_t printer_print_lf(printer_t *ctx)
Printer print LF function.
err_t printer_download_nv_bitmap(printer_t *ctx, uint8_t location, uint8_t h_size, uint8_t v_size, uint8_t *bitmap)
Printer download NV Bitmap function.
err_t printer_set_right_margin(printer_t *ctx, uint8_t num_dots)
Printer set right margin function.
err_t printer_set_barcode_width(printer_t *ctx, uint8_t width)
Printer set barcode width function.
err_t printer_transfer_qr_code(printer_t *ctx, uint8_t *qr_code, uint16_t code_len)
Printer transfer QR code function.
err_t printer_set_barcode_height(printer_t *ctx, uint8_t height)
Printer set barcode height function.
err_t printer_show_barcode_text(printer_t *ctx)
Printer show barcode text function.
err_t printer_get_fw_info(printer_t *ctx)
Printer get FW info function.
err_t printer_set_horizontal_tab(printer_t *ctx, uint8_t *col_pos, uint8_t num_tabs)
Printer set horizontal tab function.
err_t printer_set_line_spacing(printer_t *ctx, uint8_t num_dots)
Printer set line spacing function.
err_t printer_set_left_margin(printer_t *ctx, uint8_t num_dots)
Printer set left margin function.
err_t printer_horizontal_tab(printer_t *ctx)
Printer horizontal tab function.
err_t printer_generic_read(printer_t *ctx, uint8_t *data_out, uint8_t len)
Printer data reading function.
err_t printer_set_abs_print_pos(printer_t *ctx, uint16_t num_dots)
Printer set abs print pos function.
uint8_t printer_get_rts_pin(printer_t *ctx)
Printer get RTS pin function.
err_t printer_set_db_mode(printer_t *ctx)
Printer set db mode function.
err_t printer_cancel_db_mode(printer_t *ctx)
Printer cancel db mode function.
err_t printer_set_qr_error_corr(printer_t *ctx, uint8_t corr_level)
Printer set QR error corr function.
err_t printer_set_com_mode(printer_t *ctx, uint8_t baud_rate, uint8_t flow_control)
Printer set com mode function.
err_t printer_default_cfg(printer_t *ctx)
Printer default configuration function.
err_t printer_print_barcode(printer_t *ctx, uint8_t barcode_sys, uint8_t *barcode, uint8_t barcode_len)
Printer print barcode function.
err_t printer_get_status(printer_t *ctx)
Printer get status function.
err_t printer_set_font_size(printer_t *ctx, uint8_t size)
Printer set font size function.
void printer_cfg_setup(printer_cfg_t *cfg)
Printer configuration object setup function.
err_t printer_set_printer_cb(printer_t *ctx, uint8_t callback)
Printer set printer cb function.
err_t printer_set_font_type(printer_t *ctx, uint8_t font_type)
Printer set font type function.
err_t printer_print_lines(printer_t *ctx, uint8_t num_lines)
Printer print lines function.
err_t printer_set_alignment(printer_t *ctx, uint8_t align)
Printer set alignment function.
printer_return_value_t
Printer Click return value data.
Definition printer.h:284
@ PRINTER_ERROR
Definition printer.h:286
@ PRINTER_OK
Definition printer.h:285
Printer Click configuration object.
Definition printer.h:262
pin_name_t rts
Definition printer.h:268
uint32_t baud_rate
Definition printer.h:271
bool uart_blocking
Definition printer.h:272
uart_data_bits_t data_bit
Definition printer.h:273
pin_name_t tx_pin
Definition printer.h:265
pin_name_t rx_pin
Definition printer.h:264
uart_stop_bits_t stop_bit
Definition printer.h:275
uart_parity_t parity_bit
Definition printer.h:274
Printer Click context object.
Definition printer.h:241
uint8_t fw_info[64]
Definition printer.h:253
uint8_t uart_rx_buffer[PRINTER_RX_DRV_BUFFER_SIZE]
Definition printer.h:249
uint8_t status[16]
Definition printer.h:252
uart_t uart
Definition printer.h:246
uint8_t uart_tx_buffer[PRINTER_TX_DRV_BUFFER_SIZE]
Definition printer.h:250
digital_in_t rts
Definition printer.h:243